﻿
namespace Xenta.Enums
{
    /// <summary>
    /// Defines the tag sort options.
    /// </summary>
    public enum CatalogTagSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by weight summary.
        /// </summary>
        Weight,

        /// <summary>
        /// Order by weight by item.
        /// </summary>
        WeightByItem,

        /// <summary>
        /// Order by weight by supplier.
        /// </summary>
        WeightBySupplier,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the supplier address sort options.
    /// </summary>
    public enum CatalogSupplierAddressSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by contact name.
        /// </summary>
        ContactName,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the supplier sort options.
    /// </summary>
    public enum CatalogSupplierSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by comment count.
        /// </summary>
        CommentCount,

        /// <summary>
        /// Order by review count.
        /// </summary>
        RatingCount,

        /// <summary>
        /// Order by review count.
        /// </summary>
        RatingAverage,

        /// <summary>
        /// Order by item count.
        /// </summary>
        ItemCount,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the category sort options.
    /// </summary>
    public enum CatalogCategorySortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by supplier count.
        /// </summary>
        SupplierCount,

        /// <summary>
        /// Order by item count.
        /// </summary>
        ItemCount,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the item sort options.
    /// </summary>
    public enum CatalogItemSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by comment count.
        /// </summary>
        CommentCount,

        /// <summary>
        /// Order by rating count.
        /// </summary>
        RatingCount,

        /// <summary>
        /// Order by review count.
        /// </summary>
        RatingAverage,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the manager sort options.
    /// </summary>
    public enum CatalogManagerSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by account username.
        /// </summary>
        AccountUsername,

        /// <summary>
        /// Order by account email.
        /// </summary>
        AccountEmail,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }
}
